The present invention relates to industrial automation software which provides a graphical interface to a process, such as either a human machine interface (HMI) or supervisory control and data acquisition (SCADA) capabilities.
Industrial automation applications generally perform various functions such as a human machine interface (HMI), data logging, I/O interfacing, advanced control, and enterprise connectivity. Industrial automation applications, also referred to as process monitoring and control applications, cover many applications and industries, including applications in industrial and research environments; continuous, batch and discrete processes; and I/O operations ranging from data collection to SCADA to direct control. Personal computer systems are increasingly being used in industrial automation applications. Reasons for the increasing use of personal computers in industrial automation applications include the open PC architecture, which is both highly flexible and adaptable to many functions; high computational performance at a relatively low cost; a wide variety of off-the-shelf software and hardware products which provide a wide range of data acquisition, analysis, presentation, and management tools; and the relative ease of connecting various computer systems within a system.
PC based systems often either replace or supplement existing systems such as distributed control systems (DCS) or a PLC (programmable logic controller) based system. Where a PC based system supplements an existing control system, the PC based system can serve many different types of auxiliary functions which enhance the use of these systems and provide lower expansion costs. Industrial automation software executing on a personal computer provides an architecture for applications ranging from simple HMI to large sophisticated SCADA systems. This industrial automation software generally supports functions such as PLC interfacing, trending and data logging, among others.
Modern PC based industrial automation software applications generally allow the user to monitor and control the process from any workstation or computer on the network. The industrial automation software generally provides networking capabilities which allows the user to view the same or different screens simultaneously on separate nodes, make set point adjustments and acknowledge alarms from any node, and configure specific nodes for monitoring only, among others.
In prior systems, there have basically been three methods for networking multiple computer nodes. One method for networking multiple computer nodes on a network in an industrial automation system is referred to as multi-link networking. This method requires a net DDE (network dynamic data exchange) link for each and every value being passed between the nodes. Dynamic data exchange (DDE) is a Microsoft application tool that allows the user to connect live data from one Windows application to another. After a DDE link has been established, any data value change in the source application automatically and immediately updates the associated value in the linked application. Once values have been linked, any change to the value of one object is instantly propagated to and reflected by the second object at the other computer. Another type of net DDE networking is referred to as table-to-table networking. This method implements a xe2x80x9cdata concentrator conceptxe2x80x9d at each node wherein each node includes one or more concentrators, also referred to as table objects, which are linked between the nodes. The user basically links a table to a corresponding table at another computer using net DDE. Once linked, the tables update each other on any and all changes within their databases. The second type of networking which has traditionally been performed is referred to a hardware networking. In this method, all nodes in the industrial automation system which are desired to be networked are required to have direct communication access to all of the hardware. Thus, in this method, the PLCs, Remote Terminal Units (RTUs), and other I/O are the mechanisms for sharing data between nodes. This method does not rely on data being directly passed between the industrial automation computer systems also referred to as nodes. The third method uses the OPC (OLE for Process Control) Data Access interfaces together with DCOM (Distributed Component Object Model) to make network connections between a server and client. The server exposes an OPC interface that exposes functions to read and write variable values. These functions are marshalled across the network using DCOM so that the client can call them just as if the server were on the same machine as the client. This solution has the advantage of simplicity on the part of person developing the server and client applications. It has the disadvantage that each call into the OPC interface blocks while a message is sent over the network from client to server and a response is sent back. Additionally, there is no mechanism for data compression in the OPC/DCOM protocol.
In a networked industrial automation system including a plurality of nodes, it is highly desirable for data values received from hardware devices, such as PLCs, to be received by each of the clients which desire to monitor or receive the respective data. For example, each computer system or node on the network can act as a client, and each client can subscribe to thousands of data points from various other devices. Accordingly, this large transfer of data can consume a large amount of network bandwidth and thus degrade system operation.
For example, when a hardware device generates data, current industrial automation software assigns a timestamp and quality value to every data element. This results in increased network traffic and storage requirements. Also, data is transferred through the network in packets wherein each packet has associated overhead in terms of headers, footers, error correction information, and other protocol information.
Therefore, an improved networked industrial automation system and method is desired for data transfer among nodes in the network. It would be highly desirable for the system to provide an efficient mechanism for transferring large amounts of data, wherein the system is scalable and hence provides graceful degradation as the number of data points being transmitted increases.
The present invention comprises a computer based industrial automation system and method which provides improved network transfer of data between different nodes. In the preferred embodiment, the system comprises a plurality of computer systems, referred to as nodes, which are interconnected through a network. One or more of these computer systems interface to various hardware I/O devices in the industrial automation system such as PLCs (programmable logic controllers), etc. Each of the computer systems preferably executes industrial automation software according to the present invention. The industrial automation software provides a graphical interface (GUI) to the process, e.g., as either a human machine interface (HMI) or as a supervisory control and data acquisition (SCADA) system.
In the preferred embodiment, when a hardware I/O device generates data, a server process or object is notified and receives the data from the hardware I/O device. The server process maintains a database of clients which are interested in the data being provided or published by the respective hardware I/O device. In response to receiving the data element from the hardware I/O device, the server creates a packet for the data for transfer over the network to a respective client, or to each of a plurality of clients which are interested in the data. The server preferably uses a novel real-time protocol for creation of the packet and transfer of the packet over the network in substantially real time.
In the preferred embodiment, the server process operates to compress the data using delta compression, wherein a delta value represents the change in the data value of the data element with respect to the prior data element value. The server process then represents this delta data value as an integer value times a quantum value, wherein the quantum value was previously determined or agreed upon between the server and the respective one or more clients. This quantum value is predetermined to enable the server process to optimally represent the delta data value as an integer value and hence preferably within a single byte format.
The server process comprises one or more drivers and one or more real-time servers. In the preferred embodiment, the driver reads a block of data elements from one or more hardware devices. The driver then assigns a single timestamp and a single quality value to the block of data elements. The quality value represents the presence or absence of specified error conditions which affect the quality of the data at the time it is generated by the data acquisition device. The driver provides the block, including the single timestamp and single quality value, to a real-time server. The real-time server then generates a packet comprising one or more blocks received from one or more drivers, wherein each block includes a plurality of data elements, the single timestamp, and the single quality value. The real-time server sends the entire block, including the single timestamp and the single quality value, using delta compression, so that only the changed values and latest timestamps and quality values are sent to clients. By using a single timestamp and single quality value for each block of data elements, the method reduces network traffic and storage requirements.
In the preferred embodiment, for each block that the driver will acquire, the server process has previously registered a time/quality (TQ) group with the real-time protocol on both the client and server ends. A TQ group defines a set of associated data elements which share a timestamp and quality value. A time-quality identification value (TQID) identifies a pre-defined TQ group, and the server process and each of the clients store a TQID for each TQ group. The system and method utilize the TQID to more efficiently update data elements stored by a subscribing client: for each TQ group as identified by a TQID, the server only sends to each subscribing client the changed data elements and the latest timestamp and quality value, and the client updates the appropriate data elements with the latest timestamp and quality value by referring to the TQID for those data elements.
In the preferred embodiment, the server operates to add compressed data element values to a packet for either a predetermined timeout period or until the payload of the packet has reached a certain size. Thus, the system essentially uses a xe2x80x9ctrain stationxe2x80x9d model, wherein the train does not leave the station (the packet is not transmitted) until the train (packet) is substantially full or a certain time period has elapsed. By maximizing the payload of compressed data values comprised in the packet, the system operates to transfer a large amount of data with respect to each packet, thus reducing the overhead associated with protocol information of respective packets. In other words, the system operates to transfer the largest amount of data possible for each respective packet, thus reducing the overhead associated with each data element value. Once the payload of the packet has reached a certain size and/or a timeout period has elapsed, the server process transfers the packet to each of the one or more clients which are interested in the data. The client then operates to remove the payload of compressed data values from the packet, decompress the data, and perform any desired operations or storage with respect to the received data values.
In one embodiment, the server process determines if a plurality of clients are interested in at least a subset of the same data elements. If so, the server process operates to generate a multi-cast packet which is a packet comprising data element values, preferably in a compressed format, which are desired by each of the plurality of clients. Once this packet is completed, i.e., has reached a certain size and/or a certain time out period has elapsed, the server process operates to multi-cast this packet to each of the plurality of clients which are interested in this common data. This further reduces network traffic by reducing the amount of individual packets which would normally be required to be transmitted in a point-to-point single-cast system.